<?php
//error_reporting(E_ALL|E_STRICT);
//ini_set('display_errors', 'on');
//        
/**
 * Description of ClienteController
 *
 * @author Cesar
 */
class Estadisticas_EstadisticaController extends Zend_Controller_Action{
    private $clienteDao;
    private $usuarioDao;
    private $referenciaDao;
    private $ingresoDao;
    private $tipoSesionDao;
    private $tipoDocumentoDao;
    private $sesionDao;
    private $menu = 1;


    public function init() {
        $auht = Zend_Auth::getInstance();
        
        if ($auht->hasIdentity()){
            $this->view->usuarioSesion = $auht->getIdentity();
            //var_dump($auht->getIdentity());
        } else {
            return $this->_redirect("/default/index/login/");
        }
//        if (!Zend_Auth::getInstance()->hasIdentity()){
//            return $this->_redirect("/default/index/login/");
//        }
            
        $this->clienteDao = new Doctrine_Model_ClienteDao();
        $this->usuarioDao = new Doctrine_Model_UsuarioDao();
        $this->referenciaDao = new Doctrine_Model_ReferenciasDoctrineDao();
        $this->ingresoDao = new Doctrine_Model_IngresoDao();
        $this->tipoSesionDao = new Doctrine_Model_TipoSesionDao();
        $this->tipoDocumentoDao = new Doctrine_Model_TipoDocumentoDao();
        $this->sesionDao = new Doctrine_Model_SesionesDao();
        
        $this->view->usuario = $this->usuarioDao->obtenerPorId($auht->getIdentity()->id); 
        
    }
    
    public function indexAction() {
        
        $this->_helper->redirector('index','index', 'default' );
    }
    
    public function pruebaAction() {
        //$datos = $this->getRequest()->getParams();
        //var_dump($datos);
        //$this->_helper->redirector('index','index', 'default' );
        $datos = $this->getRequest()->getParams();
        $this->view->clientesEntreFechas = $datos[clientesEntreFechas];
        //var_dump($datos[clientesEntreFechas]);
    }
    
    
    public function consultaestadisticaAction(){
        $datos = $this->getRequest()->getParams();
        if($this->getRequest()->isPost()){
            //$opcionRadio = $datos['optionsRadios'];
            $dateTime = new DateTime();
            $fecha_desde = $dateTime->createFromFormat("d/m/Y", $datos['fecha_desde']);
            $fecha_hasta = $dateTime->createFromFormat("d/m/Y", $datos['fecha_hasta']);
            $edad_desde = $datos['slc_edad_desde'];
            $edad_hasta = $datos['slc_edad_hasta'];
            $zona = $datos['zona'];
            /*********Pregunto si la zona esta seteada************/
            if ($datos['zona']== 0){
                $zona = NULL;
            }
            /***********busco por sexo**********/
           
                switch ($datos['slc_tipo_cliente']) {
                    case 0:
                        $clientesEntreFechas = $this->clienteDao->obtenerEntreFechas(date_format($fecha_desde, 'Y-m-d'),date_format($fecha_hasta, 'Y-m-d'),NULL,$zona);
                    break;

                    case 1:
                        $clientesEntreFechas = $this->clienteDao->obtenerEntreFechas(date_format($fecha_desde, 'Y-m-d'),date_format($fecha_hasta, 'Y-m-d'),1,$zona);
                    break;

                    case 2:
                        $clientesEntreFechas = $this->clienteDao->obtenerEntreFechas(date_format($fecha_desde, 'Y-m-d'),date_format($fecha_hasta, 'Y-m-d'),2,$zona);
                    break;

                }
            /**************Todos los clientes*********/    
//            if ($datos['optionsRadios'] == 'nuevos'){} 
//            else {
//                $ingresosEntreFechas = $this->ingresoDao->obtenerEntreFechas(date_format($fecha_desde, 'Y-m-d'),date_format($fecha_hasta, 'Y-m-d'));
//                $clientesEntreFechas = new Doctrine\Common\Collections\ArrayCollection();
//
//                foreach ($ingresosEntreFechas as $ingreso) {
//                    $cliente = $ingreso->getCliente();
//                    if(!$clientesEntreFechas->contains($cliente) )
//                                    if ($datos['slc_tipo_cliente'] == $cliente->getSexo())
//                                        $clientesEntreFechas->add($cliente);
//                                    else if ($datos['slc_tipo_cliente'] == 0)
//                                        $clientesEntreFechas->add($cliente);
//                    } 
//            }
            

            /*******Busco los clientes con la edad/es pasadas como parametros, siempre y cuando el parametro no sea nulo*********/
            $arrayAux = array();
            if($edad_desde <> 0){
                foreach ($clientesEntreFechas as $cliente) {
                if ( $this->clienteDao->calculoEdad($cliente->getFechaNacimiento()->format('Y-m-d'))*1 >= $edad_desde*1 and $this->clienteDao->calculoEdad($cliente->getFechaNacimiento()->format('Y-m-d'))*1 <= $edad_hasta*1) {
                    $arrayAux[]= $cliente;
                } 
                }
                $clientesEntreFechas = $arrayAux;
            }
            $this->view->clientesEntreFechas = $clientesEntreFechas;
            $this->view->clienteDao = $this->clienteDao ;
            $this->view->edad_desde= $edad_desde;
            $this->view->edad_hasta= $edad_hasta;
            $this->view->fecha_desde = $fecha_desde;
            $this->view->fecha_hasta = $fecha_hasta;
            //$this->_helper->redirector('prueba','estadistica', 'estadisticas' ,array('clientesEntreFechas'=>$clientesEntreFechas));
        }
         
    }
    
    public function consultaingresosAction(){
        $datos = $this->getRequest()->getParams();
        //var_dump($datos); //exit;
        $dateTime = new DateTime();
        $fecha_desde = $dateTime->createFromFormat("d/m/Y", $datos['fecha_desde']);
        $fecha_hasta = $dateTime->createFromFormat("d/m/Y", $datos['fecha_hasta']);
        $cantSesion = $datos['cant_sesion']  ? $datos['cant_sesion']*1 : NULL;
        $sesion = $datos['tipo_sesion'] ? $datos['tipo_sesion']*1 : NULL;
        if ($this->getRequest()->isPost()){
            //$ingresosEntreFechas = $this->ingresoDao->obtenerEntreFechas($fecha_desde->format("Y-m-d"),$fecha_hasta->format("Y-m-d"));
            $ingresosEntreFechas = $this->ingresoDao->obtenerEntreFechasYcantidadSesion($fecha_desde->format("Y-m-d"),$fecha_hasta->format("Y-m-d"),$cantSesion,$sesion);
//            if ($datos['tipo_sesion'] <> 0) {
//                $tipo_sesion = $this->getRequest()->getParam('tipo_sesion', null);
//                $sesionesEntreFechas = $this->sesionDao->obtenerEntreFechas($fecha_desde->format("Y-m-d"), $fecha_hasta->format("Y-m-d"), $tipo_sesion);
//            } else {
//                $cantSesion = $datos['cant_sesion'];
//                $ingresosEntreFechas = $this->ingresoDao->obtenerEntreFechasYcantidadSesion($fecha_desde->format("Y-m-d"),$fecha_hasta->format("Y-m-d"),$cantSesion,$tipo_sesion);
//            }
        }
        $sesion = '';
        if($datos['tipo_sesion'] <> 0){
            $sesion = $this->tipoSesionDao->obtenerPorId($datos['tipo_sesion']);
            $sesion = $sesion->getDescripcion();
        }
        //echo 'cantidad de ingresos'.count($ingresos).'</br>';
        //var_dump($ingresos);
        //var_dump($ingresosEntreFechas);
        $this->view->tipoAbono = $datos['cant_sesion'];
        $this->view->tipoSesion = $sesion;
        $this->view->ingresosEntreFechas = $ingresosEntreFechas;
        $this->view->sesionesEntreFechas = $sesionesEntreFechas;
    }
    
    public function consultasesionesAction(){
        $datos = $this->getRequest()->getParams();  
        $dateTime = new DateTime();
        $fecha_desde = $dateTime->createFromFormat("d/m/Y", $datos['fecha_desde']);
        $fecha_hasta = $dateTime->createFromFormat("d/m/Y", $datos['fecha_hasta']);
        $sesion = $datos['tipo_sesion'] ? $datos['tipo_sesion']*1 : NULL;
        if ($this->getRequest()->isPost()){
            $sesionesEntreFechas = $this->sesionDao->obtenerEntreFechas($fecha_desde->format("Y-m-d"),$fecha_hasta->format("Y-m-d"),$sesion);

        }
        $sesion = '';
        if($datos['tipo_sesion'] <> 0){
            $sesion = $this->tipoSesionDao->obtenerPorId($datos['tipo_sesion']);
            $sesion = $sesion->getDescripcion();
        }
        $this->view->tipoSesion = $sesion;
        $this->view->sesionesEntreFechas = $sesionesEntreFechas;
    }
  

}